<?php
namespace app\http\middleware;
use think\facade\Config;

class modelInit{

    public function handle($request, \Closure $next){
        // 设置mbstring字符编码
        mb_internal_encoding("UTF-8");;
        // 如果修改了index.php入口地址，则需要手动修改cdnurl的值
        $url = preg_replace("/\/(\w+)\.php$/i", '', $request->root());
        // 如果未设置__CDN__则自动匹配得出
        if (!Config::get('template.tpl_replace_string.__CDN__'))
        {
            Config::set('template.tpl_replace_string.__CDN__', $url);
        }
        // 如果未设置__PUBLIC__则自动匹配得出
        if (!Config::get('template.tpl_replace_string.__PUBLIC__'))
        {
            Config::set('template.tpl_replace_string.__PUBLIC__', $url . '/');
        }
        // 如果未设置__ROOT__则自动匹配得出
        if (!Config::get('template.tpl_replace_string.__ROOT__'))
        {
            Config::set('template.tpl_replace_string.__ROOT__', preg_replace("/\/public\/$/", '', $url . '/'));
        }
        // 如果未设置cdnurl则自动匹配得出
        if (!Config::get('site.cdnurl'))
        {
            Config::set('site.cdnurl', $url);
        }
        // 如果未设置cdnurl则自动匹配得出
        if (!Config::get('upload.cdnurl'))
        {
            Config::set('upload.cdnurl', $url);
        }
        if (Config::get('app.app_debug'))
        {
            // 如果是调试模式将version置为当前的时间戳可避免缓存
            Config::set('site.version', time());
            // 如果是开发模式那么将异常模板修改成官方的
            Config::set('exception_tmpl', \think\facade\Env::get('think_path') . 'tpl' . DIRECTORY_SEPARATOR . 'think_exception.tpl');
        }
        // 如果是trace模式且Ajax的情况下关闭trace
        if (Config::get('app.app_trace') && $request->isAjax())
        {
            Config::set('app.app_trace', false);
        }
        // 切换多语言
        if (Config::get('app.lang_switch_on') && $request->get('lang'))
        {
            \think\facade\Cookie::set('think_var', $request->get('lang'));
        }
        // Form别名
        if (!class_exists('Form')) {
            class_alias('fast\\Form', 'Form');
        }
        return $next($request);
    }
}